package com.summer.patterns;

public abstract class TaskBase {

    protected TaskCenter taskCenter;

    protected void bindTaskCenter(TaskCenter taskCenter){
    	this.taskCenter = taskCenter;
    }
    
    void doTask(){
        onDoTask();
    }

    protected abstract void onDoTask();

    /**
     * 必须在doAction中调用这个才能往后面执行
     * @param taskResult
     */
    public void complete(){
        taskCenter.execute();
    }

    /**
     * 根据前一个结果来判断当前任务要不要执行
     * @param lastTaskResult
     * @return error 返回到任务中心会直接中断整个任务
     */
    protected boolean prepare(){
    	return onPrepare();
    };
    public boolean onPrepare(){
    	return true;
    }

}
